<?php
/**
 * Representa��o de um Campus.
 */
require_once('CampusDAO.php');


class Campus
{
      private $id;             // Chave-prim�ria da campus cadastrada no banco de dados.
      private $nome;           // Nome da campus
      private $responsavel;    // Respons�vel pela campus
      private $dao;            // Objeto para acesso ao banco de dados
      
      public function __set( $var, $val )
      {
             $this->$var = $val;
      }

      public function __get( $var )
      {
             return $this->$var;
      }
      
      public function __construct( $id = NULL, $nome = NULL, $responsavel = NULL )
      {
             $this->id = $id;
             $this->nome = $nome;
             $this->responsavel = $responsavel;
             $this->dao = new CampusDAO();
      }
      
      /**
	 	* Insere um registro no banco de dados na tabela t_campus com os dados do objeto.
	 	* @return - Retorna TRUE caso a opera��o seja efetuada com sucesso ou FALSE caso contr�rio.	 
    	*/
      public function CadastrarCampus(  )
      {
             $resultado = $this->dao->Salvar( $this );
             return $resultado;
      }
      
      public function CarregarTodosCampusMenos($campusId)
      {
      		$resultado = $this->dao->CarregarTodosMenos($campusId);
      		return $resultado;
      }

      /**
	 	* Altera o registro no banco de dados na tabela t_campus associado ao objeto.
	 	* @return - Retorna TRUE caso a opera��o seja efetuada com sucesso ou FALSE caso contr�rio. 
		*/
      public function AlterarCampus(  )
      {
             $resultado = $this->dao->Alterar( $this );
             return $resultado;
      }

      /**
	 	* Exclui um registro no banco de dados da tabela t_campus.
	 	* @param $id - Chave-primária no banco de dados do campus.
	 	* @return - Retorna TRUE caso a operações seja efetuada com sucesso ou FALSE caso contrário. 
		*/
      public function RemoverCampus( $id )
      {
             $resultado = $this->dao->Deletar( $id );
             return $resultado;
      }

      /**
	 	* Carrega da tabela t_campus no banco de dados o registro referente a chave-primária $id.
	 	* Transforma o registro retornado do banco de dados em um objeto Campus com essas informações.
	 	* @param $id - Chave-primária no banco de dados do campus.
	 	* @return - Retorna um objeto do tipo Campus caso a operação seja efetuada com sucesso, caso contrário retorna FALSE.
	 	*/
      public function CarregarCampus( $id )
      {
             $resultado = $this->dao->Carregar( $id );
             return $resultado;
      }
      
      /**
      Busca por todos os registros inseridos na tabela t_campus.
      Para cada registro encontrado ser� criada uma inst�ncia de Campus com os valores das colunas do registro em quest�o.
      Por fim, caso sejam encontrados registros, todas as inst�ncias criadas ser�o inseridas dentro de um array que ser� retornado por este m�todo.
      Caso contr�rio, ser� retornado FALSE indicando que n�o foi encontrado nenhum registro.
      @return - Retorna um array de objetos do tipo Campus. Caso n�o encontre nenhum registro retorna FALSE.
      */
      public function CarregarCampi()
      {
             $resultado = $this->dao->CarregarTodos();
             return $resultado;
      }
      
      /**
	 	* Transforma o array com os registros retornados da tabela t_campus em objetos do tipo Campus.
	 	* @param $array - Array com os registros retornados de uma consulta a tabela t_campus.
	 	* @return Retorna um array de objetos do tipo Campus ou FALSE caso o argumento informado n�o seja do tipo requerido.
	 	*/
   
      
	  static public function ArrayParaObjetos( $array )
	  {
			if( !is_array($array) )
				return FALSE;
				
			$objetos = array();
			for( $i = 0; $i < count( $array ); $i++ )
			{
				$campus = new Campus( $array[$i]['id'], $array[$i]['nome'], $array[$i]['responsavel'] );
				$objetos[] = $campus;
			}
			return $objetos;
	  }
}
?>
